import {uniChooseImage, uniChooseVideo} from "./uniPromise";
import store from "../store";

/**
 * 上传图片
 * @param params
 * @returns {Promise<unknown>}
 */
export const uploadImage = (params = {}) => {
    return new Promise((resolve, reject) => {
        params = {//支持传入参数
            count: 9, //最多可以选择的图片张数，默认9
            sourceType: ['album', 'camera'], //album 从相册选图，camera 使用相机，默认二者都有。如需直接开相机或直接选相册，请只使用一个选项
            size: 2, //图片大小限制，默认2，单位MB
            prefix: false, //图片上传完成是否自动拼接域名，默认true
			ReqUrl: 'OSSUploadFileMany',
            ...params
        }
        uniChooseImage(params).then(imgArr => {
            if (imgArr.length > 0) {
                let apiList = imgArr.map(item => createApi(item, params.prefix,params.ReqUrl))
                Promise.all(apiList).then(res => {
                   resolve(res.map(sucImgObj => {
                   	if(!sucImgObj){
                   		uniToast('部分资源上传失败')
                   	}
                   	return sucImgObj
                   }))
                }).catch(() => {
                    reject('请求错误')
                })
            } else {
                reject('未获取到选择的图片')
            }
        }).catch((err) => {
            reject(err)
        })
    })
}




/**
 * 上传视频
 * @param params
 * @returns {Promise<unknown>}
 */
export const uploadVideo = (params = {}) => {
    return new Promise((resolve, reject) => {
        params = {
            sourceType: ['album', 'camera'], //album 从相册选视频，camera 使用相机拍摄，默认为：['album', 'camera']
            compressed: true, //是否压缩所选的视频源文件，默认值为 true，需要压缩。
            maxDuration: 60, //拍摄视频最长拍摄时间，单位秒。最长支持 60 秒。
            camera: 'back', //'front'、'back'，默认'back'
            size: 30, //视频大小限制，默认20，单位MB
            prefix: false, //视频上传完成是否自动拼接域名，默认true
			ReqUrl: 'OSSUploadVideo',
            ...params
        }
        uniChooseVideo(params).then(res => {
            createApi(res, params.prefix,params.ReqUrl).then(res => {
                resolve(res)
            }).catch(err => {
                reject(err)
            })
        }).catch((err) => {
            reject(err)
        })
    })
}

/**
 * 生成上传api，这是上传到oss
 * @type {string}
 */
let baseUrl = ''
function createApi(filePath, prefix = true, ReqUrl) {
    return new Promise((resolve, reject) => {
        // #ifdef H5
        baseUrl = process.env.NODE_ENV === 'production' ? store.state.vuex_businessObj.resquest : '/newApi'
        // #endif
        // #ifndef H5
        baseUrl = store.state.vuex_businessObj.resquest
        // #endif
        uni.uploadFile({
            url: baseUrl + '/webapi/'+ ReqUrl,
            filePath: filePath,
			timeout: 60 * 1000 * 5,
			formData: {
				business_id: store.state.vuex_business.pk_id,
				catalog: '',
			},
            name: 'file',
            success(res) {
				// #ifdef  MP-BAIDU
								const obj = res.data
				// #endif 
				
				// #ifndef MP-BAIDU
				     const obj = JSON.parse(res.data)
				// #endif 
                if (prefix) obj.data = store.state.vuex_businessObj.resquest + obj.data
                resolve(obj.Data)
            },
            fail(err) {
                console.error(err)
                reject(err)
            }
        });
    });
}
